package simplemaven2.vt;

import org.apache.log4j.Logger;
import ru.chezclif.lern.conread.Preconditions;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;

/**
 * Класс для аутентификации пользователя
 *
 * @author Vit
 */
public class AutenticBean implements Serializable {
    /**
     * Заглушка для админского логина
     */
    private final String TRUE_LOGIN = "admin";
    /**
     * Заглушка для админского пароля
     */
    private final String TRUE_PASS = "admin";
    /**
     * Метка, говорящая о факте удачной аутентификации и предоставлении прав пользоватедю (авторизации)
     */
    private boolean autoriz = false;
    /**
     * Поле ввода логина
     */
    private String login = "";
    /**
     * Поле ввода пароля
     */
    private String password = "";
    /**
     * Стандартный логгер
     */
    private static final Logger logger = Logger.getLogger(AutenticBean.class);

    /**
     * Аутентификация пользователя с последующим перенаправлением
     */
    public void autenticLoginAndPass() throws IOException {
        if (login.trim().toLowerCase().equals(TRUE_LOGIN) && password.equals(TRUE_PASS)) {
            this.autoriz = true;
            logger.info("Logon complete");
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse httpResponse = (HttpServletResponse) context.getExternalContext().getResponse();
            httpResponse.sendRedirect("/config/webconfig");
        } else {
            logger.info("Error on autentification");
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletResponse httpResponse = (HttpServletResponse) context.getExternalContext().getResponse();
            httpResponse.sendRedirect("/errors/errorloginpassalt.xhtml");
        }
    }

    /**
     * Очистить поля ввода информации для авторизации
     */
    public void cancelAutorization() {
        this.login = "";
        this.password = "";
    }

    //Геттеры и сеттеры
    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        Preconditions.notNull(login);
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        Preconditions.notNull(password);
        this.password = password;
    }

    public boolean isAutoriz() {
        return autoriz;
    }
}
